애스펙트 지향 프로그래밍
애스팩트(aspect)를 사용해서 횡단 관심사를 모듈화하는 패러다임.
비판
James Gosling on AOP:
AOP is kind of a complicated one for me, because AOP is one of these things where the theory sounds really good. I actually mostly like the theory. The way it turns out in practice tends to be pretty dangerous. It’s fraught with all kinds of problems. You know when the AOP folks talk about AOP they list you like three or four use cases for AOP and they actually mostly make sense, although they have problems in the details. But there actually aren’t very many use cases outside of that. And when you find people who are using AOP, the average ones that I’ve talked to have been using it for things that are just like incredibly inappropriate. It’s like a really, really, really bad idea to be doing what they’re doing. And so I feel very conflicted because on the one hand I basically like the concept, but I don’t think that the research community has really figured out how to encapsulate those in a mechanism that really works for people. It’s like giving them a chainsaw without any safety instructions.1
다른 패러다임과의 관계
AOP does not depend on OOP:
OOP is a popular programming language technology. Most implementations of new language ideas are done in the context of OOP. The class hierarchy of OO systems is a convenient structure over which to quantify. However, quantification and obliviousness are independent of Object-Orientation. Therefore, it is perfectly reasonable to develop AOP for FunctionalLanguages or ImperativeLanguages. —p30-31, Aspect-oriented software development